// 导入数据库操作模块
const { id } = require('@hapi/joi/lib/base');
const db = require('../db/index');
// 导入处理密码加密的模块
const bcrypt = require('bcryptjs');
// 获取用户基本信息的处理函数
exports.getUserInfo = (req, res) => {
    // 定义查询用户信息的sql语句
    const sql = 'select id,username,nickname,email,user_pic from rv_users where id=?';
    // 调用
    db.query(sql, req.user.id, (err, results) => {
        // 执行失败
        if (err) return res.cc(err);
        // 执行成功,但没有查询到
        if (results.length !== 1) return res.cc('获取用户失败');
        // 执行成功
        res.send({
            status: 0,
            message: '获取用户信息成功',
            data: results[0]
        })
    })
}
// 更新用户基本信息的处理函数
exports.updateUserInfo = (req,res)=>{
    // 定义待执行的sql语句
    const sql = 'update ev_users set ? where id=?';
    db.query(sql,[req.body,req.body.id],(err,results)=>{
        // 执行失败
        if (err) return res.cc(err);
        // 执行成功
        if (results.affectedRows !== 1) return res.cc('更新用户信息失败');
        // 执行成功
        res.cc('更新用户成功',0)
    })
}
// 更新密码的处理函数
exports.updatePassword = (req,res)=>{
    // 查询id用户个人信息
    const sql = 'select * from ev_users where id=?';
    // 根据id查询用户
    db.query(sql,req.user.id,(err,results)=>{
        // 执行错误
        if(err) return res.cc(err); 
        // 没有查询到
        if(err.length !== 1) return res.cc('用户不存在！！');
        // 查询到用户，判断旧密码是否正确
        const compareResult =  bcrypt.compareSync(req.body.oldPwd,results[0].password);
        // 错误
        if(!compareResult) return res.cc('旧密码错误');
        // 更新数据库中的密码
        // 定义更新密码的sql语句
        const sql = 'update ev_users set password=? where id=?';
        // 对新密码进行加密
        const newPwd =  bcrypt.hashSync(req.body.newPwd,10);
        // 调用db
        db.query(sql,[newPwd,req.user.id],(err,results)=>{
            if(err) return res.cc(err);
            if(results.length !== 1) return res.cc('更新密码失败');
            res.cc('更新密码成功',0)
        })
    })
}
// 更换用户头像的处理函数
exports.updateAvater = (req,res)=>{
    const sql = 'update ev_users set user_pic=? where id=?';
    db.query(sql,[req.body.avater,req.user.id],(err,results)=>{
        if(err) return res.cc(err);
        if(results.length !== 1) return res.cc('更换头像失败');
        res.cc('更换头像成功',0)
    })
}